using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._StandardFeatureAnalysisTools._SummarizeData
{
    /// <summary>
    /// <para>Summarize Nearby</para>
    /// <para>Finds features that are within a specified distance of features in the input layer.</para>
    /// <para>查找输入图层中要素的指定距离内的要素。</para>
    /// </summary>    
    [DisplayName("Summarize Nearby")]
    public class SummarizeNearby : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public SummarizeNearby()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_sumNearbyLayer">
        /// <para>Input Nearby Layer</para>
        /// <para>Point, line, or polygon features from which distances will be measured to features in the input summary layer.</para>
        /// <para>点、线或面要素，从这些要素中测量到输入汇总图层中的要素的距离。</para>
        /// </param>
        /// <param name="_summaryLayer">
        /// <para>Input Summary Features</para>
        /// <para>Point, line, or polygon features. Features in this layer that are within the specified distance to features in the input nearby layer will be summarized.</para>
        /// <para>点、线或面要素。将汇总此图层中与输入邻近图层中的要素在指定距离内的要素。</para>
        /// </param>
        /// <param name="_outputName">
        /// <para>Output Name</para>
        /// <para>The name of the output layer to create on your portal.</para>
        /// <para>要在门户上创建的输出图层的名称。</para>
        /// </param>
        /// <param name="_nearType">
        /// <para>Distance Measurement</para>
        /// <para><xdoc>
        ///   <para>Defines what kind of distance measurement you want to use: straight-line distance or by measuring travel time or travel distance along a street network using various modes of transportation known as travel modes.</para>
        ///   <bulletList>
        ///     <bullet_item>Straight-line—Use straight-line Euclidean measurement of distance. This is the default.</bullet_item><para/>
        ///     <bullet_item>Driving distance—Use distance as driven in an automobile.</bullet_item><para/>
        ///     <bullet_item>Driving time—Use distance covered during a specified driving time in an automobile.</bullet_item><para/>
        ///     <bullet_item>Trucking distance—Use distance as driven in a truck.</bullet_item><para/>
        ///     <bullet_item>Trucking time—Use distance covered during a specified driving time in a truck.</bullet_item><para/>
        ///     <bullet_item>Walking distance—Use distance as walked along a street.</bullet_item><para/>
        ///     <bullet_item>Walking time—Use distance covered during a specified walking time.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>定义要使用的距离测量类型：直线距离，或者使用各种交通方式（称为出行模式）测量出行时间或沿街道网络的出行距离。</para>
        ///   <bulletList>
        ///     <bullet_item>直线 （Straight-line） - 使用直线欧几里得距离测量。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>行驶距离 - 使用汽车行驶距离。</bullet_item><para/>
        ///     <bullet_item>行驶时间 - 使用汽车在指定行驶时间内行驶的距离。</bullet_item><para/>
        ///     <bullet_item>卡车运输距离 - 使用卡车行驶距离。</bullet_item><para/>
        ///     <bullet_item>卡车运输时间 - 使用卡车在指定行驶时间内行驶的距离。</bullet_item><para/>
        ///     <bullet_item>步行距离 - 使用沿街道行走的距离。</bullet_item><para/>
        ///     <bullet_item>步行时间 - 使用指定步行时间内覆盖的距离。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        /// <param name="_distances">
        /// <para>Distances</para>
        /// <para>A list of double values that defines the search distance (for straight-line and distance-based travel modes) or time (for time-based travel modes). You can enter a single distance value or multiple values. Features that are within (or equal to) the distances you enter will be summarized. The units of the distance values is supplied by the units parameter.</para>
        /// <para>定义搜索距离（对于直线和基于距离的出行模式）或时间（对于基于时间的出行模式）的双精度值列表。您可以输入单个距离值或多个值。将汇总在您输入的距离范围内（或等于）的要素。距离值的单位由 units 参数提供。</para>
        /// </param>
        /// <param name="_units">
        /// <para>Distance Units</para>
        /// <para><xdoc>
        ///   <para>If the near type is straight-line or a distance-based travel mode, this is the linear unit to be used with the distance values specified in distances. Valid options include meters, kilometers, feet, yards, and miles.</para>
        ///   <para>If the near type is a time-based travel mode, values include seconds, minutes, and hours.</para>
        ///   <bulletList>
        ///     <bullet_item>Miles—Miles</bullet_item><para/>
        ///     <bullet_item>Feet—Feet</bullet_item><para/>
        ///     <bullet_item>Kilometers—Kilometers</bullet_item><para/>
        ///     <bullet_item>Meters—Meters</bullet_item><para/>
        ///     <bullet_item>Yards—Yards</bullet_item><para/>
        ///     <bullet_item>Seconds—Seconds</bullet_item><para/>
        ///     <bullet_item>Minutes—Minutes</bullet_item><para/>
        ///     <bullet_item>Hours—Hours</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>如果近线类型是直线或基于距离的出行模式，则这是要与距离中指定的距离值一起使用的线性单位。有效选项包括米、公里、英尺、码和英里。</para>
        ///   <para>如果邻近类型是基于时间的出行模式，则值包括秒、分钟和小时。</para>
        ///   <bulletList>
        ///     <bullet_item>英里 - 英里</bullet_item><para/>
        ///     <bullet_item>英尺 - 英尺</bullet_item><para/>
        ///     <bullet_item>公里 - 公里</bullet_item><para/>
        ///     <bullet_item>米 - 米</bullet_item><para/>
        ///     <bullet_item>码 - 码</bullet_item><para/>
        ///     <bullet_item>秒 - 秒</bullet_item><para/>
        ///     <bullet_item>分钟 - 分钟</bullet_item><para/>
        ///     <bullet_item>小时 - 小时</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        public SummarizeNearby(object _sumNearbyLayer, object _summaryLayer, object _outputName, _nearType_value _nearType, List<object> _distances, _units_value? _units)
        {
            this._sumNearbyLayer = _sumNearbyLayer;
            this._summaryLayer = _summaryLayer;
            this._outputName = _outputName;
            this._nearType = _nearType;
            this._distances = _distances;
            this._units = _units;
        }
        public override string ToolboxName => "Standard Feature Analysis Tools";

        public override string ToolName => "Summarize Nearby";

        public override string CallName => "sfa.SummarizeNearby";

        public override List<string> AcceptEnvironments => ["extent"];

        public override object[] ParameterInfo => [_sumNearbyLayer, _summaryLayer, _outputName, _nearType.GetGPValue(), _distances, _units.GetGPValue(), _timeOfDay, _timeZoneForTimeOfDay.GetGPValue(), _returnBoundaries.GetGPValue(), _sumShape.GetGPValue(), _shapeUnits.GetGPValue(), _summaryFields, _groupByField, _minorityMajority.GetGPValue(), _percentShape.GetGPValue(), _resultLayer, _groupBySummary];

        /// <summary>
        /// <para>Input Nearby Layer</para>
        /// <para>Point, line, or polygon features from which distances will be measured to features in the input summary layer.</para>
        /// <para>点、线或面要素，从这些要素中测量到输入汇总图层中的要素的距离。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Nearby Layer")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _sumNearbyLayer { get; set; }


        /// <summary>
        /// <para>Input Summary Features</para>
        /// <para>Point, line, or polygon features. Features in this layer that are within the specified distance to features in the input nearby layer will be summarized.</para>
        /// <para>点、线或面要素。将汇总此图层中与输入邻近图层中的要素在指定距离内的要素。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Summary Features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _summaryLayer { get; set; }


        /// <summary>
        /// <para>Output Name</para>
        /// <para>The name of the output layer to create on your portal.</para>
        /// <para>要在门户上创建的输出图层的名称。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Name")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _outputName { get; set; }


        /// <summary>
        /// <para>Distance Measurement</para>
        /// <para><xdoc>
        ///   <para>Defines what kind of distance measurement you want to use: straight-line distance or by measuring travel time or travel distance along a street network using various modes of transportation known as travel modes.</para>
        ///   <bulletList>
        ///     <bullet_item>Straight-line—Use straight-line Euclidean measurement of distance. This is the default.</bullet_item><para/>
        ///     <bullet_item>Driving distance—Use distance as driven in an automobile.</bullet_item><para/>
        ///     <bullet_item>Driving time—Use distance covered during a specified driving time in an automobile.</bullet_item><para/>
        ///     <bullet_item>Trucking distance—Use distance as driven in a truck.</bullet_item><para/>
        ///     <bullet_item>Trucking time—Use distance covered during a specified driving time in a truck.</bullet_item><para/>
        ///     <bullet_item>Walking distance—Use distance as walked along a street.</bullet_item><para/>
        ///     <bullet_item>Walking time—Use distance covered during a specified walking time.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>定义要使用的距离测量类型：直线距离，或者使用各种交通方式（称为出行模式）测量出行时间或沿街道网络的出行距离。</para>
        ///   <bulletList>
        ///     <bullet_item>直线 （Straight-line） - 使用直线欧几里得距离测量。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>行驶距离 - 使用汽车行驶距离。</bullet_item><para/>
        ///     <bullet_item>行驶时间 - 使用汽车在指定行驶时间内行驶的距离。</bullet_item><para/>
        ///     <bullet_item>卡车运输距离 - 使用卡车行驶距离。</bullet_item><para/>
        ///     <bullet_item>卡车运输时间 - 使用卡车在指定行驶时间内行驶的距离。</bullet_item><para/>
        ///     <bullet_item>步行距离 - 使用沿街道行走的距离。</bullet_item><para/>
        ///     <bullet_item>步行时间 - 使用指定步行时间内覆盖的距离。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Distance Measurement")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _nearType_value _nearType { get; set; }

        public enum _nearType_value
        {
            /// <summary>
            /// <para>Driving distance</para>
            /// <para>Driving distance—Use distance as driven in an automobile.</para>
            /// <para>行驶距离 - 使用汽车行驶距离。</para>
            /// </summary>
            [Description("Driving distance")]
            [GPEnumValue("DRIVINGDISTANCE")]
            _DRIVINGDISTANCE,

            /// <summary>
            /// <para>Driving time</para>
            /// <para>Driving time—Use distance covered during a specified driving time in an automobile.</para>
            /// <para>行驶时间 - 使用汽车在指定行驶时间内行驶的距离。</para>
            /// </summary>
            [Description("Driving time")]
            [GPEnumValue("DRIVINGTIME")]
            _DRIVINGTIME,

            /// <summary>
            /// <para>Straight-line</para>
            /// <para>Straight-line—Use straight-line Euclidean measurement of distance. This is the default.</para>
            /// <para>直线 （Straight-line） - 使用直线欧几里得距离测量。这是默认设置。</para>
            /// </summary>
            [Description("Straight-line")]
            [GPEnumValue("STRAIGHTLINE")]
            _STRAIGHTLINE,

            /// <summary>
            /// <para>Trucking distance</para>
            /// <para>Trucking distance—Use distance as driven in a truck.</para>
            /// <para>卡车运输距离 - 使用卡车行驶距离。</para>
            /// </summary>
            [Description("Trucking distance")]
            [GPEnumValue("TRUCKINGDISTANCE")]
            _TRUCKINGDISTANCE,

            /// <summary>
            /// <para>Trucking time</para>
            /// <para>Trucking time—Use distance covered during a specified driving time in a truck.</para>
            /// <para>卡车运输时间 - 使用卡车在指定行驶时间内行驶的距离。</para>
            /// </summary>
            [Description("Trucking time")]
            [GPEnumValue("TRUCKINGTIME")]
            _TRUCKINGTIME,

            /// <summary>
            /// <para>Walking distance</para>
            /// <para>Walking distance—Use distance as walked along a street.</para>
            /// <para>步行距离 - 使用沿街道行走的距离。</para>
            /// </summary>
            [Description("Walking distance")]
            [GPEnumValue("WALKINGDISTANCE")]
            _WALKINGDISTANCE,

            /// <summary>
            /// <para>Walking time</para>
            /// <para>Walking time—Use distance covered during a specified walking time.</para>
            /// <para>步行时间 - 使用指定步行时间内覆盖的距离。</para>
            /// </summary>
            [Description("Walking time")]
            [GPEnumValue("WALKINGTIME")]
            _WALKINGTIME,

        }

        /// <summary>
        /// <para>Distances</para>
        /// <para>A list of double values that defines the search distance (for straight-line and distance-based travel modes) or time (for time-based travel modes). You can enter a single distance value or multiple values. Features that are within (or equal to) the distances you enter will be summarized. The units of the distance values is supplied by the units parameter.</para>
        /// <para>定义搜索距离（对于直线和基于距离的出行模式）或时间（对于基于时间的出行模式）的双精度值列表。您可以输入单个距离值或多个值。将汇总在您输入的距离范围内（或等于）的要素。距离值的单位由 units 参数提供。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Distances")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public List<object> _distances { get; set; }


        /// <summary>
        /// <para>Distance Units</para>
        /// <para><xdoc>
        ///   <para>If the near type is straight-line or a distance-based travel mode, this is the linear unit to be used with the distance values specified in distances. Valid options include meters, kilometers, feet, yards, and miles.</para>
        ///   <para>If the near type is a time-based travel mode, values include seconds, minutes, and hours.</para>
        ///   <bulletList>
        ///     <bullet_item>Miles—Miles</bullet_item><para/>
        ///     <bullet_item>Feet—Feet</bullet_item><para/>
        ///     <bullet_item>Kilometers—Kilometers</bullet_item><para/>
        ///     <bullet_item>Meters—Meters</bullet_item><para/>
        ///     <bullet_item>Yards—Yards</bullet_item><para/>
        ///     <bullet_item>Seconds—Seconds</bullet_item><para/>
        ///     <bullet_item>Minutes—Minutes</bullet_item><para/>
        ///     <bullet_item>Hours—Hours</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>如果近线类型是直线或基于距离的出行模式，则这是要与距离中指定的距离值一起使用的线性单位。有效选项包括米、公里、英尺、码和英里。</para>
        ///   <para>如果邻近类型是基于时间的出行模式，则值包括秒、分钟和小时。</para>
        ///   <bulletList>
        ///     <bullet_item>英里 - 英里</bullet_item><para/>
        ///     <bullet_item>英尺 - 英尺</bullet_item><para/>
        ///     <bullet_item>公里 - 公里</bullet_item><para/>
        ///     <bullet_item>米 - 米</bullet_item><para/>
        ///     <bullet_item>码 - 码</bullet_item><para/>
        ///     <bullet_item>秒 - 秒</bullet_item><para/>
        ///     <bullet_item>分钟 - 分钟</bullet_item><para/>
        ///     <bullet_item>小时 - 小时</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Distance Units")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _units_value? _units { get; set; }

        public enum _units_value
        {
            /// <summary>
            /// <para>Meters</para>
            /// <para>Meters—Meters</para>
            /// <para>米 - 米</para>
            /// </summary>
            [Description("Meters")]
            [GPEnumValue("METERS")]
            _METERS,

            /// <summary>
            /// <para>Kilometers</para>
            /// <para>Kilometers—Kilometers</para>
            /// <para>公里 - 公里</para>
            /// </summary>
            [Description("Kilometers")]
            [GPEnumValue("KILOMETERS")]
            _KILOMETERS,

            /// <summary>
            /// <para>Feet</para>
            /// <para>Feet—Feet</para>
            /// <para>英尺 - 英尺</para>
            /// </summary>
            [Description("Feet")]
            [GPEnumValue("FEET")]
            _FEET,

            /// <summary>
            /// <para>Yards</para>
            /// <para>Yards—Yards</para>
            /// <para>码 - 码</para>
            /// </summary>
            [Description("Yards")]
            [GPEnumValue("YARDS")]
            _YARDS,

            /// <summary>
            /// <para>Miles</para>
            /// <para>Miles—Miles</para>
            /// <para>英里 - 英里</para>
            /// </summary>
            [Description("Miles")]
            [GPEnumValue("MILES")]
            _MILES,

            /// <summary>
            /// <para>Seconds</para>
            /// <para>Seconds—Seconds</para>
            /// <para>秒 - 秒</para>
            /// </summary>
            [Description("Seconds")]
            [GPEnumValue("SECONDS")]
            _SECONDS,

            /// <summary>
            /// <para>Minutes</para>
            /// <para>Minutes—Minutes</para>
            /// <para>分钟 - 分钟</para>
            /// </summary>
            [Description("Minutes")]
            [GPEnumValue("MINUTES")]
            _MINUTES,

            /// <summary>
            /// <para>Hours</para>
            /// <para>Hours—Hours</para>
            /// <para>小时 - 小时</para>
            /// </summary>
            [Description("Hours")]
            [GPEnumValue("HOURS")]
            _HOURS,

        }

        /// <summary>
        /// <para>Time Of Day</para>
        /// <para><xdoc>
        ///   <para>Specify whether travel times should consider traffic conditions. To use traffic in the analysis, you must set the near type to a travel-time-based mode. The time of day value represents the time at which travel begins, or departs, from the input points.</para>
        ///   <para>Two kinds of traffic are supported: typical and live. Typical traffic references travel speeds that are made up of historical averages for each 5-minute interval spanning a week. Live traffic retrieves speeds from a traffic feed that processes phone probe records, sensors, and other data sources to record actual travel speeds and predict speeds for the near future.</para>
        ///   <para>To ensure the task uses typical traffic in locations where it is available, choose a time and day of the week and convert the day of the week to one of the following dates from 1990:Although the dates representing days of the week are from 1990, typical traffic is calculated from recent traffic trends—usually over the last several months.
        ///   <bulletList>
        ///     <bullet_item>Monday—1/1/1990  </bullet_item><para/>
        ///     <bullet_item>Tuesday—1/2/1990  </bullet_item><para/>
        ///     <bullet_item>Wednesday—1/3/1990  </bullet_item><para/>
        ///     <bullet_item>Thursday—1/4/1990  </bullet_item><para/>
        ///     <bullet_item>Friday—1/5/1990  </bullet_item><para/>
        ///     <bullet_item>Saturday—1/6/1990  </bullet_item><para/>
        ///     <bullet_item>Sunday—1/7/1990  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>To use live traffic when and where it is available, choose a date and time within 12 hours of the current time. Esri saves live traffic data for 12 hours and references predictive data extending 12 hours into the future. If the time and date you specify for this parameter is outside the 24-hour time window, or the travel time in the analysis continues past the predictive data window, the task falls back to typical traffic speeds.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定行驶时间是否应考虑交通状况。要在分析中使用流量，必须将邻近类型设置为基于行驶时间的模式。时间值表示从输入点开始或离开旅行的时间。</para>
        ///   <para>支持两种流量：典型流量和实时流量。典型的交通流量是指由一周内每 5 分钟间隔的历史平均值组成的行驶速度。实时流量从流量源中检索速度，该流量源处理电话探测记录、传感器和其他数据源，以记录实际行驶速度并预测不久的将来的速度。</para>
        /// <para>若要确保任务在可用的位置使用典型流量，请选择一周中的时间和日期，并将星期几转换为 1990 年的以下日期之一：尽管表示星期几的日期是从 1990 年开始的，但典型流量是根据最近的流量趋势（通常是过去几个月的流量趋势）计算的。
        ///   <bulletList>
        ///     <bullet_item>星期一—1/1/1990</bullet_item><para/>
        ///     <bullet_item>星期二—1/2/1990</bullet_item><para/>
        ///     <bullet_item>星期三—1/3/1990</bullet_item><para/>
        ///     <bullet_item>星期四—1/4/1990</bullet_item><para/>
        ///     <bullet_item>星期五—1/5/1990</bullet_item><para/>
        ///     <bullet_item>星期六—1/6/1990</bullet_item><para/>
        ///     <bullet_item>星期日—1/7/1990</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>要在可用时间和地点使用实时流量，请选择当前时间 12 小时内的日期和时间。Esri 将实时流量数据保存 12 小时，并参考未来 12 小时的预测数据。如果为此参数指定的时间和日期超出 24 小时时间窗口，或者分析中的行驶时间继续超过预测数据窗口，则任务将回退到典型的交通速度。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Time Of Day")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _timeOfDay { get; set; } = null;


        /// <summary>
        /// <para>Time Zone</para>
        /// <para><xdoc>
        ///   <para>Specify the time zone or zones of the chosen time of day. There are two options: GeoLocal (default) and UTC.</para>
        ///   <bulletList>
        ///     <bullet_item>Geolocal—The time of day value refers to the time zone or zones in which the input points are located. This option causes the analysis to have rolling start times across time zones. This is the default.</bullet_item><para/>
        ///     <bullet_item>Coordinated Universal Time (UTC)—The time of day value refers to Coordinated Universal Time (UTC). The start times for all points are simultaneous, regardless of time zones.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定一天中所选时间的一个或多个时区。有两个选项：GeoLocal（默认）和 UTC。</para>
        ///   <bulletList>
        ///     <bullet_item>Geolocal—时间值是指输入点所在的一个或多个时区。此选项使分析具有跨时区的滚动开始时间。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>协调世界时 （UTC） - 一天中的时间值是指协调世界时 （UTC）。无论时区如何，所有点的开始时间都是同时的。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Time Zone")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _timeZoneForTimeOfDay_value _timeZoneForTimeOfDay { get; set; } = _timeZoneForTimeOfDay_value._GEOLOCAL;

        public enum _timeZoneForTimeOfDay_value
        {
            /// <summary>
            /// <para>Coordinated Universal Time (UTC)</para>
            /// <para>Coordinated Universal Time (UTC)—The time of day value refers to Coordinated Universal Time (UTC). The start times for all points are simultaneous, regardless of time zones.</para>
            /// <para>协调世界时 （UTC） - 一天中的时间值是指协调世界时 （UTC）。无论时区如何，所有点的开始时间都是同时的。</para>
            /// </summary>
            [Description("Coordinated Universal Time (UTC)")]
            [GPEnumValue("UTC")]
            _UTC,

            /// <summary>
            /// <para>Geolocal</para>
            /// <para>Geolocal—The time of day value refers to the time zone or zones in which the input points are located. This option causes the analysis to have rolling start times across time zones. This is the default.</para>
            /// <para>Geolocal—时间值是指输入点所在的一个或多个时区。此选项使分析具有跨时区的滚动开始时间。这是默认设置。</para>
            /// </summary>
            [Description("Geolocal")]
            [GPEnumValue("GEOLOCAL")]
            _GEOLOCAL,

        }

        /// <summary>
        /// <para>Return boundaries</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the input geometries will be returned or the straight-line or travel mode buffer geometry.
        ///   <bulletList>
        ///     <bullet_item>Checked—The output layer will contain areas defined by the specified near type. For example, if using a straight-line distance of 5 miles, the output will contain areas with a 5-mile radius around the input nearby layer features. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—The output layer will contain the same features as the input nearby layer.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定是返回输入几何图形，还是返回直线或移动模式缓冲区几何图形。
        ///   <bulletList>
        ///     <bullet_item>选中 - 输出图层将包含由指定近似类型定义的区域。例如，如果使用 5 英里的直线距离，则输出将包含输入附近图层要素周围半径为 5 英里的区域。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>未选中 - 输出图层将包含与输入邻近图层相同的要素。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Return boundaries")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _returnBoundaries_value _returnBoundaries { get; set; } = _returnBoundaries_value._true;

        public enum _returnBoundaries_value
        {
            /// <summary>
            /// <para>RETURN_BOUNDARIES</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("RETURN_BOUNDARIES")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>RETURN_INPUT</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("RETURN_INPUT")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Add shape summary attributes</para>
        /// <para><xdoc>
        ///   <para>Calculate statistics based on the shape of the input summary features, such as the length of lines or areas of polygons of the summary features within each polygon in the input summary layer.
        ///   <bulletList>
        ///     <bullet_item>Checked—Calculate the shape summary attributes. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—Do not calculate the shape summary attributes.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>根据输入汇总要素的形状计算统计数据，例如输入汇总图层中每个面内汇总要素的线长度或面面积。
        ///   <bulletList>
        ///     <bullet_item>选中 （Checked） - 计算形状汇总属性。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>未选中 （Unchecked） - 不计算形状汇总属性。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Add shape summary attributes")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _sumShape_value _sumShape { get; set; } = _sumShape_value._true;

        public enum _sumShape_value
        {
            /// <summary>
            /// <para>ADD_SHAPE_SUM</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ADD_SHAPE_SUM")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_SHAPE_SUM</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_SHAPE_SUM")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Shape Unit</para>
        /// <para><xdoc>
        ///   <para>If summarizing the shape of the nearby features, specify the units of the shape summary.</para>
        ///   <para>When the input summary features are polygons, the valid options are acres, hectares, square meters, square kilometers, square feet, square yards, and square miles.</para>
        ///   <para>When the input summary features are lines, the valid options are meters, kilometers, feet, yards, and miles.</para>
        ///   <bulletList>
        ///     <bullet_item>Miles—Miles</bullet_item><para/>
        ///     <bullet_item>Feet—Feet</bullet_item><para/>
        ///     <bullet_item>Kilometers—Kilometers</bullet_item><para/>
        ///     <bullet_item>Meters—Meters</bullet_item><para/>
        ///     <bullet_item>Yards—Yards</bullet_item><para/>
        ///     <bullet_item>Acres—Acres</bullet_item><para/>
        ///     <bullet_item>Hectares—Hectares</bullet_item><para/>
        ///     <bullet_item>Square meters—Square meters</bullet_item><para/>
        ///     <bullet_item>Square kilometers—Square kilometers</bullet_item><para/>
        ///     <bullet_item>Square feet—Square feet</bullet_item><para/>
        ///     <bullet_item>Square yards—Square yards</bullet_item><para/>
        ///     <bullet_item>Square miles—Square miles</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>如果汇总附近要素的形状，请指定形状汇总的单位。</para>
        ///   <para>当输入汇总要素为面时，有效选项为英亩、公顷、平方米、平方公里、平方英尺、平方码和平方英里。</para>
        ///   <para>当输入汇总要素为线时，有效选项为米、千米、英尺、码和英里。</para>
        ///   <bulletList>
        ///     <bullet_item>英里 - 英里</bullet_item><para/>
        ///     <bullet_item>英尺 - 英尺</bullet_item><para/>
        ///     <bullet_item>公里 - 公里</bullet_item><para/>
        ///     <bullet_item>米 - 米</bullet_item><para/>
        ///     <bullet_item>码 - 码</bullet_item><para/>
        ///     <bullet_item>英亩 - 英亩</bullet_item><para/>
        ///     <bullet_item>公顷 - 公顷</bullet_item><para/>
        ///     <bullet_item>平方米 - 平方米</bullet_item><para/>
        ///     <bullet_item>平方公里 - 平方公里</bullet_item><para/>
        ///     <bullet_item>平方英尺 - 平方英尺</bullet_item><para/>
        ///     <bullet_item>平方码 - 平方码</bullet_item><para/>
        ///     <bullet_item>平方英里 - 平方英里</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Shape Unit")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _shapeUnits_value? _shapeUnits { get; set; } = null;

        public enum _shapeUnits_value
        {
            /// <summary>
            /// <para>Meters</para>
            /// <para>Meters—Meters</para>
            /// <para>米 - 米</para>
            /// </summary>
            [Description("Meters")]
            [GPEnumValue("METERS")]
            _METERS,

            /// <summary>
            /// <para>Kilometers</para>
            /// <para>Kilometers—Kilometers</para>
            /// <para>公里 - 公里</para>
            /// </summary>
            [Description("Kilometers")]
            [GPEnumValue("KILOMETERS")]
            _KILOMETERS,

            /// <summary>
            /// <para>Feet</para>
            /// <para>Feet—Feet</para>
            /// <para>英尺 - 英尺</para>
            /// </summary>
            [Description("Feet")]
            [GPEnumValue("FEET")]
            _FEET,

            /// <summary>
            /// <para>Yards</para>
            /// <para>Yards—Yards</para>
            /// <para>码 - 码</para>
            /// </summary>
            [Description("Yards")]
            [GPEnumValue("YARDS")]
            _YARDS,

            /// <summary>
            /// <para>Miles</para>
            /// <para>Miles—Miles</para>
            /// <para>英里 - 英里</para>
            /// </summary>
            [Description("Miles")]
            [GPEnumValue("MILES")]
            _MILES,

            /// <summary>
            /// <para>Acres</para>
            /// <para>Acres—Acres</para>
            /// <para>英亩 - 英亩</para>
            /// </summary>
            [Description("Acres")]
            [GPEnumValue("ACRES")]
            _ACRES,

            /// <summary>
            /// <para>Hectares</para>
            /// <para>Hectares—Hectares</para>
            /// <para>公顷 - 公顷</para>
            /// </summary>
            [Description("Hectares")]
            [GPEnumValue("HECTARES")]
            _HECTARES,

            /// <summary>
            /// <para>Square meters</para>
            /// <para>Square meters—Square meters</para>
            /// <para>平方米 - 平方米</para>
            /// </summary>
            [Description("Square meters")]
            [GPEnumValue("SQUAREMETERS")]
            _SQUAREMETERS,

            /// <summary>
            /// <para>Square kilometers</para>
            /// <para>Square kilometers—Square kilometers</para>
            /// <para>平方公里 - 平方公里</para>
            /// </summary>
            [Description("Square kilometers")]
            [GPEnumValue("SQUAREKILOMETERS")]
            _SQUAREKILOMETERS,

            /// <summary>
            /// <para>Square feet</para>
            /// <para>Square feet—Square feet</para>
            /// <para>平方英尺 - 平方英尺</para>
            /// </summary>
            [Description("Square feet")]
            [GPEnumValue("SQUAREFEET")]
            _SQUAREFEET,

            /// <summary>
            /// <para>Square yards</para>
            /// <para>Square yards—Square yards</para>
            /// <para>平方码 - 平方码</para>
            /// </summary>
            [Description("Square yards")]
            [GPEnumValue("SQUAREYARDS")]
            _SQUAREYARDS,

            /// <summary>
            /// <para>Square miles</para>
            /// <para>Square miles—Square miles</para>
            /// <para>平方英里 - 平方英里</para>
            /// </summary>
            [Description("Square miles")]
            [GPEnumValue("SQUAREMILES")]
            _SQUAREMILES,

        }

        /// <summary>
        /// <para>Summary Fields</para>
        /// <para><xdoc>
        ///   <para>A list of field names and statistical summary type that you wish to calculate for all points within each polygon. The count of points within each polygon is always returned. The following statistic types are supported:
        ///   <bulletList>
        ///     <bullet_item>Sum—The total value.  </bullet_item><para/>
        ///     <bullet_item>Minimum—The smallest value.  </bullet_item><para/>
        ///     <bullet_item>Max—The largest value.  </bullet_item><para/>
        ///     <bullet_item>Mean—The average or mean value.  </bullet_item><para/>
        ///     <bullet_item>Standard deviation—The standard deviation.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>要为每个面内的所有点计算的字段名称和统计汇总类型的列表。始终返回每个多边形内的点数。支持以下统计信息类型：
        ///   <bulletList>
        ///     <bullet_item>Sum - 总值。</bullet_item><para/>
        ///     <bullet_item>最小值 - 最小值。</bullet_item><para/>
        ///     <bullet_item>Max - 最大值。</bullet_item><para/>
        ///     <bullet_item>均值 - 平均值或平均值。</bullet_item><para/>
        ///     <bullet_item>标准差 （Standard deviation） - 标准差。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Summary Fields")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _summaryFields { get; set; } = null;


        /// <summary>
        /// <para>Group By Field</para>
        /// <para>This is a field from the input summary features you can use to calculate statistics separately for each unique attribute value. For example, suppose the input summary features contain point locations of businesses that store hazardous materials, and one of the fields is HazardClass containing codes that describe the type of hazardous material stored. To calculate summaries by each unique value of HazardClass, use it as the group by field.</para>
        /// <para>这是输入汇总要素中的字段，可用于单独计算每个唯一属性值的统计数据。例如，假设输入汇总要素包含存储危险材料的企业的点位置，其中一个字段是 HazardClass，其中包含描述存储的危险材料类型的代码。若要按 HazardClass 的每个唯一值计算摘要，请将其用作分组依据字段。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Group By Field")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _groupByField { get; set; } = null;


        /// <summary>
        /// <para>Add minority and majority attributes</para>
        /// <para><xdoc>
        ///   <para>This only applies when using a group by field. If checked, the minority (least dominant) or the majority (most dominant) attribute values for each group field within each boundary are calculated. Two new fields are added to the output layer prefixed with Majority_ and Minority_.
        ///   <bulletList>
        ///     <bullet_item>Unchecked—Do not add minority and majority fields. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Checked—Add minority and majority fields.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>这仅适用于使用“分组依据”字段的情况。如果选中该选项，则将计算每个边界内每个组字段的少数（最主要）或多数（最主要）属性值。两个新字段将添加到以 Majority_ 和 Minority_ 为前缀的输出图层。
        ///   <bulletList>
        ///     <bullet_item>未选中 - 不添加少数和多数字段。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>选中 - 添加少数和多数字段。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Add minority and majority attributes")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _minorityMajority_value _minorityMajority { get; set; } = _minorityMajority_value._false;

        public enum _minorityMajority_value
        {
            /// <summary>
            /// <para>ADD_MIN_MAJ</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ADD_MIN_MAJ")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_MIN_MAJ</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_MIN_MAJ")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Add group percentages</para>
        /// <para><xdoc>
        ///   <para>This only applies when using a group by field. If checked, the percentage of each unique group value is calculated for each input nearby feature.
        ///   <bulletList>
        ///     <bullet_item>Unchecked—Do not add percentage fields. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Checked—Add percentage fields.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>这仅适用于使用“分组依据”字段的情况。如果选中，则将针对每个输入附近要素计算每个唯一组值的百分比。
        ///   <bulletList>
        ///     <bullet_item>未选中 - 不添加百分比字段。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>选中 - 添加百分比字段。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Add group percentages")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _percentShape_value _percentShape { get; set; } = _percentShape_value._false;

        public enum _percentShape_value
        {
            /// <summary>
            /// <para>ADD_PERCENT</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ADD_PERCENT")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_PERCENT</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_PERCENT")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Output Feature Service</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Feature Service")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _resultLayer { get; set; }


        /// <summary>
        /// <para>Output Group Table</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Group Table")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _groupBySummary { get; set; }


        public SummarizeNearby SetEnv(object extent = null)
        {
            base.SetEnv(extent: extent);
            return this;
        }

    }

}